# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


import sys

import gvn.cmdline
import gvn.description
import gvn.errors


helptext__gvn_describe = """describe: Describe a revision or changebranch.
usage: describe CHANGE | REVISION
"""


def TryDescribe(name, ctx):
  try:
    desc = gvn.description.Description(ctx.config, ctx.project, name)
    print desc.Output()
  except gvn.errors.User, e:
    ctx.Notify('%s\n' % (e,))
    return e.code

  return 0


def Handle_GvnDescribe(ctx):
  ctx.wc_operands = False
  rval = 0
  for operand in ctx.operands:
    r = TryDescribe(operand, ctx)
    if r != 0:
      # Use the last error code as the exit code.
      rval = r

  return rval


gvn.cmdline.AddCommand('describe', Handle_GvnDescribe, helptext__gvn_describe,
                       gvn.cmdline.AuthOptions(['project']),
                       aliases=['desc'])
